package de.hdu.mfz.dao;

import java.util.List;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import de.hdu.mfz.model.Mitfahrt;
import de.hdu.mfz.model.Route;
import de.hdu.mfz.model.User;

public class MitfahrtDAO extends HibernateDaoSupport {

	

	public MitfahrtDAO() {}

	public void insert( Mitfahrt mitfahrt) {
		HibernateTemplate template = getHibernateTemplate();
		template.saveOrUpdate(mitfahrt);
	}
	
	public void delete(Mitfahrt mitfahrt) {
		HibernateTemplate template = getHibernateTemplate();
		template.delete(mitfahrt);	
	}
	
	
	// hier kann man beide alternativen get  oder load nehmen, get geht nicht direkt gegen die datenbank sondern erst auf den chache -> performanter
	public Mitfahrt findById( int mitfahrtId) {
		HibernateTemplate template = getHibernateTemplate();
		return (Mitfahrt) template.get(Mitfahrt.class, mitfahrtId);	
		
	}
	
	@SuppressWarnings("unchecked")
	public List<Mitfahrt> findAll() {
		HibernateTemplate template = getHibernateTemplate();
		@SuppressWarnings("rawtypes")
		List results = template.loadAll(Mitfahrt.class);
		return results;
	}
	
	
	//zeigt alle Mitfahrten eines Mitfahrers an
	@SuppressWarnings("unchecked")
	public List<Mitfahrt> findByMitfahrer(User mitfahrer) {
		HibernateTemplate template = getHibernateTemplate();
		List<Mitfahrt> mitfahrtenMitfahrer = template.find("from Mitfahrt m where m.mitfahrer = ?", mitfahrer);
		return mitfahrtenMitfahrer;
	}
	
	// zeigt alle an einer Route h�ngenden Mitfahrten
	@SuppressWarnings("unchecked")
	public List<Mitfahrt> findByRoute(Route route) {
		HibernateTemplate template = getHibernateTemplate();
		List<Mitfahrt> mitfahrtenRoute= template.find("from Mitfahrt m where m.route = ?", route);
		return mitfahrtenRoute;
	}
	
}
